package ltd.jdsoft.cute.scheduler.spi.impl;

import java.util.List;

import org.springframework.util.CollectionUtils;

import ltd.jdsoft.cute.common.extention.ExtensionLoader;
import ltd.jdsoft.cute.common.spi.Checker;
import ltd.jdsoft.cute.common.util.PropertyUtil;
import ltd.jdsoft.cute.scheduler.spi.Scheduler;

/**
 * 定时检查系统状态的调度器，包括cache的命中率、数据库连接池、httpclient连接池等。
 * 
 * @author zhengzhq
 *
 */
public class CheckerScheduler implements Scheduler {

  @Override
  public String getExpression() {
    // 每10分钟打印一次状态
    return PropertyUtil.getDefaultConfig("cute.scheduler.checker.expression", String.class,
        "0 0/10 * * * *");
  }

  @Override
  public void process() {
    List<Checker> checkerList = ExtensionLoader.getExtensionList(Checker.class);
    if (CollectionUtils.isEmpty(checkerList)) {
      return;
    }

    for (Checker checker : checkerList) {
      checker.check();
    }
  }
}
